package com.cc.LoadToGame;

import basemod.BaseMod;
import basemod.helpers.RelicType;
import basemod.interfaces.EditRelicsSubscriber;
import basemod.interfaces.EditStringsSubscriber;
import basemod.interfaces.PostDungeonInitializeSubscriber;
import com.badlogic.gdx.Gdx;
import com.cc.relic.MyMoney;
import com.evacipated.cardcrawl.modthespire.lib.SpireInitializer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.RelicStrings;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * @author cc
 * @date 2021/9/3 16:29
 * @Description
 */
@SpireInitializer
@SuppressWarnings("unused")
public class LoadMoneytoGame implements PostDungeonInitializeSubscriber, EditRelicsSubscriber, EditStringsSubscriber {
    /**
     * 日志对象 用来输出日志 指定本类 LoadMyEasyMod 以确认日志的输出对象
     */
    private static final Logger logger = LogManager.getLogger(LoadMoneytoGame.class);
    /**
     * 初始化整个mod 因为是静态方法将会在new 初始化之前进行把static修饰的加载到方法区，
     * @author sosmcc
     * @param
     */
     public static void initialize(){
         logger.info(">>>初始化开始..进入游戏<<<");

         new LoadMoneytoGame();
     }

    public LoadMoneytoGame() {
        BaseMod.subscribe(this);//监听事件，确保正常注入，不可缺少。
    }


    /**
     * 初始化时添加本遗物
     */
    @Override
    public void receivePostDungeonInitialize() {
        logger.info(">>>初始化开始...准备添加遗物<<<");
        MyMoney myMoney = new MyMoney();
        if (!AbstractDungeon.player.hasRelic(myMoney.relicId)){
            logger.info(">>>人物没有遗物【{}】,尝试给人物添加遗物【{}】<<<", myMoney.relicId, myMoney.relicId);
            int size = AbstractDungeon.player.getRelicNames().size();
            myMoney.instantObtain(AbstractDungeon.player,size,false);
            logger.info(">>>尝试给人物添加遗物【{}】成功<<<", myMoney.relicId);

        }
    }
    /**
     * 在游戏模组中加入新遗物
     */
    @Override
    public void receiveEditRelics() {
        logger.info(">>>尝试在游戏中加载自定义遗物属性开始<<<");
        logger.info(">>>尝试在游戏中加载【{}】遗物数据<<<", MyMoney.ID);
        BaseMod.addRelic(new MyMoney(), RelicType.RED);
        logger.info(">>>尝试在游戏中加载自定义遗物属性完毕<<<");
    }


    /**
     * 在游戏中加载本mod的json文件
     */
    /**
     * 加载json文件
     *
     *  typeInfo     遗物描述，用于日志输出
     * jsonFileName 文件名，连带json后缀 如： "MyNewCustomCardList.json"
     * className    接收该描述文件的类
     */
    @Override
    public void receiveEditStrings() {
        String typeInfo = "遗物";
        String pathrelic ="localization/AddMoreMoney.json";
        logger.info(">>>准备加载[{}]的描述json文件<<<", typeInfo);
        String s = Gdx.files.internal(pathrelic).readString("UTF-8");
        BaseMod.loadCustomStrings(RelicStrings.class,s);
        logger.info(">>>加载[{}]的json文件结束<<<", typeInfo);



    }

}
